<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>kuikui</title><meta name="author" content="Kuikui Hu"><meta name="copyright" content="Kuikui Hu"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta http-equiv="Cache-Control" content="no-transform"><meta http-equiv="Cache-Control" content="no-siteapp"><meta property="og:type" content="website">
<meta property="og:title" content="kuikui">
<meta property="og:url" content="https://kuikui1998.gitee.io/index.html">
<meta property="og:site_name" content="kuikui">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://kuikui1998.gitee.io/img/me.jpg">
<meta property="article:author" content="Kuikui Hu">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://kuikui1998.gitee.io/img/me.jpg"><link rel="shortcut icon" href="/img/favicon.png"><link rel="canonical" href="https://kuikui1998.gitee.io/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.css"><script>var GLOBAL_CONFIG = { 
  root: '/',
  algolia: undefined,
  localSearch: undefined,
  translate: undefined,
  noticeOutdate: undefined,
  highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true},
  copy: {
    success: '复制成功',
    error: '复制错误',
    noSupport: '浏览器不支持'
  },
  relativeDate: {
    homepage: false,
    post: false
  },
  runtime: '',
  date_suffix: {
    just: '刚刚',
    min: '分钟前',
    hour: '小时前',
    day: '天前',
    month: '个月前'
  },
  copyright: undefined,
  ClickShowText: undefined,
  lightbox: 'fancybox',
  Snackbar: undefined,
  justifiedGallery: {
    js: 'https://cdn.jsdelivr.net/npm/justifiedGallery/dist/js/jquery.justifiedGallery.min.js',
    css: 'https://cdn.jsdelivr.net/npm/justifiedGallery/dist/css/justifiedGallery.min.css'
  },
  isPhotoFigcaption: false,
  islazyload: false,
  isanchor: false
};

var saveToLocal = {
  set: function setWithExpiry(key, value, ttl) {
    const now = new Date()
    const expiryDay = ttl * 86400000
    const item = {
      value: value,
      expiry: now.getTime() + expiryDay,
    }
    localStorage.setItem(key, JSON.stringify(item))
  },

  get: function getWithExpiry(key) {
    const itemStr = localStorage.getItem(key)

    if (!itemStr) {
      return undefined
    }
    const item = JSON.parse(itemStr)
    const now = new Date()

    if (now.getTime() > item.expiry) {
      localStorage.removeItem(key)
      return undefined
    }
    return item.value
  }
}</script><script id="config_change">var GLOBAL_CONFIG_SITE = { 
  isPost: false,
  isHome: true,
  isHighlightShrink: false,
  isToc: false,
  postUpdate: '2021-01-05 17:40:20'
}</script><noscript><style type="text/css">
  #nav {
    opacity: 1
  }
  .justified-gallery img {
    opacity: 1
  }

  #recent-posts time,
  #post-meta time {
    display: inline !important
  }
</style></noscript><script>(function () {  window.activateDarkMode = function () {
    document.documentElement.setAttribute('data-theme', 'dark')
    if (document.querySelector('meta[name="theme-color"]') !== null) {
      document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
    }
  }
  window.activateLightMode = function () {
    document.documentElement.setAttribute('data-theme', 'light')
   if (document.querySelector('meta[name="theme-color"]') !== null) {
      document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
    }
  }
  const autoChangeMode = 'false'
  const t = saveToLocal.get('theme')
  if (autoChangeMode === '1') {
    const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches
    const isLightMode = window.matchMedia('(prefers-color-scheme: light)').matches
    const isNotSpecified = window.matchMedia('(prefers-color-scheme: no-preference)').matches
    const hasNoSupport = !isDarkMode && !isLightMode && !isNotSpecified
    if (t === undefined) {
      if (isLightMode) activateLightMode()
      else if (isDarkMode) activateDarkMode()
      else if (isNotSpecified || hasNoSupport) {
        const now = new Date()
        const hour = now.getHours()
        const isNight = hour <= 6 || hour >= 18
        isNight ? activateDarkMode() : activateLightMode()
      }
      window.matchMedia('(prefers-color-scheme: dark)').addListener(function (e) {
        if (saveToLocal.get('theme') === undefined) {
          e.matches ? activateDarkMode() : activateLightMode()
        }
      })
    } else if (t === 'light') activateLightMode()
    else activateDarkMode()
  } else if (autoChangeMode === '2') {
    const now = new Date()
    const hour = now.getHours()
    const isNight = hour <= 6 || hour >= 18
    if (t === undefined) isNight ? activateDarkMode() : activateLightMode()
    else if (t === 'light') activateLightMode()
    else activateDarkMode()
  } else {
    if (t === 'dark') activateDarkMode()
    else if (t === 'light') activateLightMode()
  }const asideStatus = saveToLocal.get('aside-status')
if (asideStatus !== undefined) {
   if (asideStatus === 'hide') {
     document.documentElement.classList.add('hide-aside')
   } else {
     document.documentElement.classList.remove('hide-aside')
   }
}})()</script><meta name="generator" content="Hexo 5.2.0"></head><body><div id="loading-box"><div class="loading-left-bg"></div><div class="loading-right-bg"></div><div class="spinner-box"><div class="configure-border-1"><div class="configure-core"></div></div><div class="configure-border-2"><div class="configure-core"></div></div><div class="loading-word">加载中...</div></div></div><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="author-avatar"><img class="avatar-img" src="/img/me.jpg" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="site-data"><div class="data-item is-center"><div class="data-item-link"><a href="/archives/"><div class="headline">文章</div><div class="length-num">23</div></a></div></div><div class="data-item is-center"><div class="data-item-link"><a href="/tags/"><div class="headline">标签</div><div class="length-num">11</div></a></div></div><div class="data-item is-center"><div class="data-item-link"><a href="/categories/"><div class="headline">分类</div><div class="length-num">3</div></a></div></div></div><hr/></div></div><div id="body-wrap"><header class="full_page" id="page-header" style="background-image: url(/img/backgroud.jpg)"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">kuikui</a></span><span id="menus"><span class="close" id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></span></span></nav><div id="site-info"><h1 id="site-title">kuikui</h1><div id="site-subtitle"><span id="subtitle"></span></div><div id="site_social_icons"><a class="social-icon" href="https://github.com/kuikui1998" target="_blank" title="Github"><i class="fab fa-github"></i></a><a class="social-icon" href="/shakuil@qq.com" target="_blank" title="Email"><i class="fas fa-envelope"></i></a></div></div><div id="scroll-down"><i class="fas fa-angle-down scroll-down-effects"></i></div></header><main class="layout" id="content-inner"><div class="recent-posts" id="recent-posts"><div class="recent-post-item"><div class="post_cover left_radius"><a href="/2021/01/05/JVM%E7%B3%BB%E5%88%97-%E7%AC%AC4%E7%AB%A0-%E8%99%9A%E6%8B%9F%E6%9C%BA%E6%A0%88/" title="JVM系列-第4章-虚拟机栈">     <img class="post_bg" src="https://gitee.com/kuikui1998/images_ben/raw/master/images/java/JVM/jvm.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="JVM系列-第4章-虚拟机栈"></a></div><div class="recent-post-info"><a class="article-title" href="/2021/01/05/JVM%E7%B3%BB%E5%88%97-%E7%AC%AC4%E7%AB%A0-%E8%99%9A%E6%8B%9F%E6%9C%BA%E6%A0%88/" title="JVM系列-第4章-虚拟机栈">JVM系列-第4章-虚拟机栈</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2021-01-05T07:31:58.000Z" title="发表于 2021-01-05 15:31:58">2021-01-05</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/JVM/">JVM</a></span><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fas fa-tag article-meta__icon"></i><a class="article-meta__tags" href="/tags/JVM/">JVM</a><span class="article-meta__link">•</span><a class="article-meta__tags" href="/tags/%E8%99%9A%E6%8B%9F%E6%9C%BA/">虚拟机</a></span></div><div class="content">虚拟机栈简介虚拟机栈的出现背景
 由于跨平台性的设计，Java的指令都是根据栈来设计的。不同平台CPU架构不同，所以不能设计为基于寄存器的【如果设计成基于寄存器的，耦合度高，性能会有所提升，因为可以对具体的CPU架构进行优化，但是跨平台性大大降低】。
 优点是跨平台，指令集小，编译器容易实现，缺点是性能下降，实现同样的功能需要更多的指令。

内存中的栈与堆
首先栈是运行时的单位，而堆是存储的单位。
即：栈解决程序的运行问题，即程序如何执行，或者说如何处理数据。堆解决的是数据存储的问题，即数据怎么放，放哪里





虚拟机栈基本内容
Java虚拟机栈是什么？

Java虚拟机栈（Java Virtual Machine Stack），早期也叫Java栈。每个线程在创建时都会创建一个虚拟机栈，其内部保存一个个的栈帧（Stack Frame），对应着一次次的Java方法调用，栈是线程私有的

1234567891011121314151617181920public class StackTest &#123;    public static void main(String[] arg ...</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/2020/12/11/JVM%E7%B3%BB%E5%88%97-%E7%AC%AC3%E7%AB%A0-%E8%BF%90%E8%A1%8C%E6%97%B6%E6%95%B0%E6%8D%AE%E5%8C%BA/" title="JVM系列-第3章-运行时数据区">     <img class="post_bg" src="https://gitee.com/kuikui1998/images_ben/raw/master/images/java/JVM/jvm.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="JVM系列-第3章-运行时数据区"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/12/11/JVM%E7%B3%BB%E5%88%97-%E7%AC%AC3%E7%AB%A0-%E8%BF%90%E8%A1%8C%E6%97%B6%E6%95%B0%E6%8D%AE%E5%8C%BA/" title="JVM系列-第3章-运行时数据区">JVM系列-第3章-运行时数据区</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-11T07:31:58.000Z" title="发表于 2020-12-11 15:31:58">2020-12-11</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/JVM/">JVM</a></span><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fas fa-tag article-meta__icon"></i><a class="article-meta__tags" href="/tags/JVM/">JVM</a><span class="article-meta__link">•</span><a class="article-meta__tags" href="/tags/%E8%99%9A%E6%8B%9F%E6%9C%BA/">虚拟机</a></span></div><div class="content">
此章把运行时数据区里比较少的地方讲一下。虚拟机栈，堆，方法区这些地方后续再讲。

运行时数据区概述及线程前言本节主要讲的是运行时数据区，也就是下图这部分，它是在类加载完成后的阶段


当我们通过前面的：类的加载 –&gt; 验证 –&gt; 准备 –&gt; 解析 –&gt; 初始化，这几个阶段完成后，就会用到执行引擎对我们的类进行使用，同时执行引擎将会使用到我们运行时数据区


类比一下也就是大厨做饭，我们把大厨后面的东西（切好的菜，刀，调料），比作是运行时数据区。而厨师可以类比于执行引擎，将通过准备的东西进行制作成精美的菜品。




运行时数据区结构运行时数据区与内存
内存是非常重要的系统资源，是硬盘和CPU的中间仓库及桥梁，承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略，保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范，来探讨一下经典的JVM内存布局。

我们通过磁盘或者网络IO得到的数据，都需要先加载到内存中，然后CPU从内存中获取数据进行读取，也就是说内存充当了 ...</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/2020/12/11/JVM%E7%B3%BB%E5%88%97-%E7%AC%AC2%E7%AB%A0-%E7%B1%BB%E5%8A%A0%E8%BD%BD%E5%AD%90%E7%B3%BB%E7%BB%9F/" title="JVM系列-第2章-类加载子系统">     <img class="post_bg" src="https://gitee.com/kuikui1998/images_ben/raw/master/images/java/JVM/jvm.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="JVM系列-第2章-类加载子系统"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/12/11/JVM%E7%B3%BB%E5%88%97-%E7%AC%AC2%E7%AB%A0-%E7%B1%BB%E5%8A%A0%E8%BD%BD%E5%AD%90%E7%B3%BB%E7%BB%9F/" title="JVM系列-第2章-类加载子系统">JVM系列-第2章-类加载子系统</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-11T06:31:58.000Z" title="发表于 2020-12-11 14:31:58">2020-12-11</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/JVM/">JVM</a></span><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fas fa-tag article-meta__icon"></i><a class="article-meta__tags" href="/tags/JVM/">JVM</a><span class="article-meta__link">•</span><a class="article-meta__tags" href="/tags/%E8%99%9A%E6%8B%9F%E6%9C%BA/">虚拟机</a></span></div><div class="content">第2章-类加载子系统内存结构概述简图

详细图英文版




中文版


注意：方法区只有HotSpot虚拟机有，J9，JRockit都没有
如果自己想手写一个Java虚拟机的话，主要考虑哪些结构呢？

 类加载器
 执行引擎

类加载器子系统类加载器子系统作用：

 类加载器子系统负责从文件系统或者网络中加载Class文件，class文件在文件开头有特定的文件标识。

 ClassLoader只负责class文件的加载，至于它是否可以运行，则由Execution Engine决定。

 加载的类信息存放于一块称为方法区的内存空间。除了类的信息外，方法区中还会存放运行时常量池信息，可能还包括字符串字面量和数字常量（这部分常量信息是Class文件中常量池部分的内存映射）






类加载器ClassLoader角色
 class file（在下图中就是Car.class文件）存在于本地硬盘上，可以理解为设计师画在纸上的模板，而最终这个模板在执行的时候是要加载到JVM当中来根据这个文件实例化出n个一模一样的实例。
 class file加载到JVM中，被称为DNA元数据模板（在下图中就是 ...</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/2020/12/11/JVM%E7%B3%BB%E5%88%97-%E7%AC%AC1%E7%AB%A0-JVM%E4%B8%8EJava%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/" title="JVM系列-第1章-JVM与Java体系结构">     <img class="post_bg" src="https://gitee.com/kuikui1998/images_ben/raw/master/images/java/JVM/jvm.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="JVM系列-第1章-JVM与Java体系结构"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/12/11/JVM%E7%B3%BB%E5%88%97-%E7%AC%AC1%E7%AB%A0-JVM%E4%B8%8EJava%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/" title="JVM系列-第1章-JVM与Java体系结构">JVM系列-第1章-JVM与Java体系结构</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-11T00:51:56.000Z" title="发表于 2020-12-11 08:51:56">2020-12-11</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/JVM/">JVM</a></span><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fas fa-tag article-meta__icon"></i><a class="article-meta__tags" href="/tags/JVM/">JVM</a><span class="article-meta__link">•</span><a class="article-meta__tags" href="/tags/%E8%99%9A%E6%8B%9F%E6%9C%BA/">虚拟机</a></span></div><div class="content">
1、本系列博客，主要是面向Java8的虚拟机。如有特殊说明，会进行标注。
2、本系列博客主要参考尚硅谷的JVM视频教程
3、参考自https://imlql.cn/page/2/

第1章-JVM和Java体系架构前言你是否也遇到过这些问题？

 运行着的线上系统突然卡死，系统无法访问，甚至直接OOM！
 想解决线上JVM GC问题，但却无从下手。
 新项目上线，对各种JVM参数设置一脸茫然，直接默认吧然后就JJ了。
 每次面试之前都要重新背一遍JVM的一些原理概念性的东西，然而面试官却经常问你在实际项目中如何调优VM参数，如何解决GC、OOM等问题，一脸懵逼。



大部分Java开发人员，除了会在项目中使用到与Java平台相关的各种高精尖技术，对于Java技术的核心Java虚拟机了解甚少。
开发人员如何看待上层框架
 一些有一定工作经验的开发人员，打心眼儿里觉得SSM、微服务等上层技术才是重点，基础技术并不重要，这其实是一种本末倒置的“病态”。
 如果我们把核心类库的API比做数学公式的话，那么Java虚拟机的知识就好比公式的推导过程。




计算机系统体系对我们来说越来越远， ...</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/2020/12/09/docker%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/" title="docker常用命令">     <img class="post_bg" src="https://gitee.com/kuikui1998/images_ben/raw/master/images/tools/docker.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="docker常用命令"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/12/09/docker%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/" title="docker常用命令">docker常用命令</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-09T09:25:56.000Z" title="发表于 2020-12-09 17:25:56">2020-12-09</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E5%AE%9E%E7%94%A8%E5%B7%A5%E5%85%B7/">实用工具</a></span><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fas fa-tag article-meta__icon"></i><a class="article-meta__tags" href="/tags/docker/">docker</a></span></div><div class="content">
 作者: kuikui
 一些doker的命令,后续继续补充

docker的主要组成部分docker是传统的CS架构分为docker client和docker server,向mysql一样
docker的镜像管理
123456789101112131415161718192021222324252627282930查看镜像列表:docker imagesdocker image ls导出镜像:docker image save centos &gt; docker-centos6.9.tar.gz导入镜像:docker image load -i docker-centos6.9.tar.gz删除镜像:docker image rm centos:latestdocker image rm 578c3搜索镜像 	docker search + 镜像名字给源中镜像打标签:docker tag nginx:latest 10.0.0.11:80&#x2F;nginx:latest推送指定镜像到docker镜像源服务器docker push 10.0.0.11:80&#x2F;ngi ...</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/2020/12/09/linux%E7%9A%84%E5%AE%9E%E7%94%A8%E5%91%BD%E4%BB%A4%E4%BB%A5%E5%8F%8A%E8%AF%B4%E6%98%8E/" title="linux的实用命令以及说明">     <img class="post_bg" src="https://gitee.com/kuikui1998/images_ben/raw/master/images/tools/linux.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="linux的实用命令以及说明"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/12/09/linux%E7%9A%84%E5%AE%9E%E7%94%A8%E5%91%BD%E4%BB%A4%E4%BB%A5%E5%8F%8A%E8%AF%B4%E6%98%8E/" title="linux的实用命令以及说明">linux的实用命令以及说明</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-09T03:05:47.000Z" title="发表于 2020-12-09 11:05:47">2020-12-09</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E5%AE%9E%E7%94%A8%E5%B7%A5%E5%85%B7/">实用工具</a></span><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fas fa-tag article-meta__icon"></i><a class="article-meta__tags" href="/tags/linux/">linux</a></span></div><div class="content">
 作者: kuikui
关于一些linux的指令 怕后期遗忘 这边做记录备用

实用指令1. 指定运行级别（7个级别）
0.关机

1.单用户【找回丢失密码】

2.多用户状态没有网络服务

3.多用户状态有网络服务

4.系统未使用保留给用户

5.图形界面

6.系统重启

系统的运行级别配置文件：/etc/inittab





切换到指定运行级别的指令：init [012356]

2. 帮助指令2.1 man获得帮助信息
man [命令或配置文件]


例如:man ls

2.2 help指令
help [命令或配置文件]

3. 文件目录类指令3.1 文件剪贴删除复制重名等
pwd：Print Working Directory，显示当前工作目录的绝对路径。
ls：-a：显示当前目录所有的文件和目录，包括隐藏的；
-l：以列表的方式显示信息。


cd：cd ~：回到自己的家目录；cd …：回到当前目录的上一级目录。
mkdir：创建目录；-p：创建多级目录。
rmdir：删除空目录。rmdir不能删除非空的目录。如果需要删除非空的目录，需要使用rm -rf。
cp： ...</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/2020/12/09/Git%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4%E5%8F%8A%E6%96%B9%E6%B3%95%E5%A4%A7%E5%85%A8/" title="Git常用命令及方法大全">     <img class="post_bg" src="https://gitee.com/kuikui1998/images_ben/raw/master/images/tools/git.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Git常用命令及方法大全"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/12/09/Git%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4%E5%8F%8A%E6%96%B9%E6%B3%95%E5%A4%A7%E5%85%A8/" title="Git常用命令及方法大全">Git常用命令及方法大全</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-09T01:01:56.000Z" title="发表于 2020-12-09 09:01:56">2020-12-09</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E5%AE%9E%E7%94%A8%E5%B7%A5%E5%85%B7/">实用工具</a></span><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fas fa-tag article-meta__icon"></i><a class="article-meta__tags" href="/tags/git/">git</a></span></div><div class="content">
 作者: kuikui
一些git的命令以及使用的方法记录防止日后遗忘

Git常用命令及方法大全 


下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。


Workspace：工作区
Index / Stage：暂存区
Repository：仓库区（或本地仓库）
Remote：远程仓库




本地分支关联远程1git branch --set-upstream-to&#x3D;origin&#x2F;分支名 分支名

代码库修改密码后push不上去怎么办？12345&#x2F;&#x2F; 重新输入密码git config --system --unset credential.helper&#x2F;&#x2F; 密码存储同步git config --global credential.helper store



一、新建代码库
12345678# 在当前目录新建一个Git代码库$ git init# 新建一个目录，将其初始化为Git代码库$ git init [project-name]# 下载一个项目和它的整个代码历史$ git clone [url]
 ...</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/2020/12/08/hexo%E4%B8%8A%E4%BC%A0%E5%9B%BE%E7%89%87%E4%B8%8D%E6%98%BE%E7%A4%BA%E9%97%AE%E9%A2%98/" title="hexo上传图片不显示问题">     <img class="post_bg" src="https://gitee.com/kuikui1998/images_ben/raw/master/images/tools/hexo.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="hexo上传图片不显示问题"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/12/08/hexo%E4%B8%8A%E4%BC%A0%E5%9B%BE%E7%89%87%E4%B8%8D%E6%98%BE%E7%A4%BA%E9%97%AE%E9%A2%98/" title="hexo上传图片不显示问题">hexo上传图片不显示问题</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-08T07:50:15.000Z" title="发表于 2020-12-08 15:50:15">2020-12-08</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E5%AE%9E%E7%94%A8%E5%B7%A5%E5%85%B7/">实用工具</a></span><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fas fa-tag article-meta__icon"></i><a class="article-meta__tags" href="/tags/hexo/">hexo</a></span></div><div class="content">问题描述之前一直在弄GitHub的博客，想着利用博客来记录一下自己的学习历程。然后就写了自己的第一个博客。其中遇到很多问题，现在在这里记录一下解决方法。
解决方法一开始，是利用下面这种做法去引进图片的，但是发现行不通，引进的照片在网页打不开：

找到Hexo下的_config.yml里的post_asset_folder，把这个选项从false改成true。
在Hexo目录下打开Git Brsh，执行一个下载上传图片插件的命令npm install hexo-asset-image –save。
继续在Git Brsh下利用hexo n “Hexo上传的图片在网页上无法显示的解决办法”来生成md的文件（” “里的内容填自己的文件名），这时就会在同级的目录下生成一个同名的文件夹。
在.md的文件中要插入图片时，先要把所要插入的图片放在生成的同名文件夹下。
利用markdown的语法将文件引入文章中。

所以接下来，用了另外一种方法：

在根目录下配置文件_config.yml 中有 post_asset_folder:false改为true。这样在建立文件时，Hexo会自动建立一个与文章 ...</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/2020/07/15/JavaWeb/" title="JavaWeb">     <img class="post_bg" src="https://gitee.com/kuikui1998/images_ben/raw/master/images/java/JavaWeb/JavaWeb.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="JavaWeb"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/07/15/JavaWeb/" title="JavaWeb">JavaWeb</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-07-15T01:51:56.000Z" title="发表于 2020-07-15 09:51:56">2020-07-15</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/Java/">Java</a></span><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fas fa-tag article-meta__icon"></i><a class="article-meta__tags" href="/tags/Java%E9%AB%98%E7%BA%A7/">Java高级</a><span class="article-meta__link">•</span><a class="article-meta__tags" href="/tags/javeweb/">javeweb</a></span></div><div class="content">1、JavaWeb的概念
JavaWeb 是指，所有通过Java 语言编写可以通过浏览器访问的程序的总称，叫JavaWeb。JavaWeb 是基于请求和响应来开发的。

什么是请求?

请求是指客户端给服务器发送数 据，叫请求Request。

什么是响应?

响应是指服务器给客户端回传数据，叫响应Response。

请求和响应是成对出现的，有请求就有响应。
1、Web 资源的分类
静态资源： html、css、js、txt、mp4 视频, jpg 图片
动态资源： jsp 页面、Servlet 程序

2、常用的Web 服务器
Tomcat：由Apache 组织提供的一种Web 服务器，提供对jsp 和Servlet 的支持。它是一种轻量级的javaWeb 容器（服务器），也是当前应用最广的JavaWeb 服务器（免费）。

Jboss：是一个遵从JavaEE 规范的、开放源代码的、纯Java 的EJB 服务器，它支持所有的JavaEE 规范（免
  费）。

GlassFish： 由Oracle 公司开发的一款JavaWeb 服务器，是一款强健的商业服务器，达到产品级质量（应用很 ...</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/2020/06/20/JDBC%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF/" title="JDBC核心技术">     <img class="post_bg" src="https://gitee.com/kuikui1998/images_ben/raw/master/images/java/JDBC/JDBC.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="JDBC核心技术"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/06/20/JDBC%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF/" title="JDBC核心技术">JDBC核心技术</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-06-20T00:51:56.000Z" title="发表于 2020-06-20 08:51:56">2020-06-20</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/Java/">Java</a></span><span class="article-meta tags"><span class="article-meta__separator">|</span><i class="fas fa-tag article-meta__icon"></i><a class="article-meta__tags" href="/tags/Java%E9%AB%98%E7%BA%A7/">Java高级</a><span class="article-meta__link">•</span><a class="article-meta__tags" href="/tags/JDBC/">JDBC</a></span></div><div class="content">JDBC核心技术讲师：宋红康
微博：尚硅谷-宋红康

第1章：JDBC概述1.1 数据的持久化
持久化(persistence)：把数据保存到可掉电式存储设备中以供之后使用。大多数情况下，特别是企业级应用，数据持久化意味着将内存中的数据保存到硬盘上加以”固化”，而持久化的实现过程大多通过各种关系数据库来完成。

持久化的主要应用是将内存中的数据存储在关系型数据库中，当然也可以存储在磁盘文件、XML数据文件中。
 


1.2 Java中的数据存储技术
在Java中，数据库存取技术可分为如下几类：

JDBC直接访问数据库

JDO (Java Data Object )技术

第三方O/R工具，如Hibernate, Mybatis 等



JDBC是java访问数据库的基石，JDO、Hibernate、MyBatis等只是更好的封装了JDBC。


1.3 JDBC介绍
JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口（一组API），定义了用来访问数据库的标准Java类库，（java.sql,ja ...</div></div></div><nav id="pagination"><div class="pagination"><span class="page-number current">1</span><a class="page-number" href="/page/2/">2</a><a class="page-number" href="/page/3/">3</a><a class="extend next" rel="next" href="/page/2/"><i class="fas fa-chevron-right fa-fw"></i></a></div></nav></div><div class="aside_content" id="aside_content"><div class="card-widget card-info"><div class="card-content"><div class="card-info-avatar is-center"><img class="avatar-img" src="/img/me.jpg" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/><div class="author-info__name">Kuikui Hu</div><div class="author-info__description"></div></div><div class="card-info-data"><div class="card-info-data-item is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">23</div></a></div><div class="card-info-data-item is-center"><a href="/tags/"><div class="headline">标签</div><div class="length-num">11</div></a></div><div class="card-info-data-item is-center"><a href="/categories/"><div class="headline">分类</div><div class="length-num">3</div></a></div></div><a class="button--animated" id="card-info-btn" target="_blank" rel="noopener" href="https://github.com/kuikui1998"><i class="fab fa-github"></i><span>Follow Me</span></a><div class="card-info-social-icons is-center"><a class="social-icon" href="https://github.com/kuikui1998" target="_blank" title="Github"><i class="fab fa-github"></i></a><a class="social-icon" href="/shakuil@qq.com" target="_blank" title="Email"><i class="fas fa-envelope"></i></a></div></div></div><div class="card-widget card-announcement"><div class="card-content"><div class="item-headline"><i class="fas fa-bullhorn card-announcement-animation"></i><span>公告</span></div><div class="announcement_content">Welcome Kuikui's Blog</div></div></div><div class="sticky_layout"><div class="card-widget card-recent-post"><div class="card-content"><div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/2021/01/05/JVM%E7%B3%BB%E5%88%97-%E7%AC%AC4%E7%AB%A0-%E8%99%9A%E6%8B%9F%E6%9C%BA%E6%A0%88/" title="JVM系列-第4章-虚拟机栈"><img src="https://gitee.com/kuikui1998/images_ben/raw/master/images/java/JVM/jvm.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="JVM系列-第4章-虚拟机栈"/></a><div class="content"><a class="title" href="/2021/01/05/JVM%E7%B3%BB%E5%88%97-%E7%AC%AC4%E7%AB%A0-%E8%99%9A%E6%8B%9F%E6%9C%BA%E6%A0%88/" title="JVM系列-第4章-虚拟机栈">JVM系列-第4章-虚拟机栈</a><time datetime="2021-01-05T07:31:58.000Z" title="发表于 2021-01-05 15:31:58">2021-01-05</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2020/12/11/JVM%E7%B3%BB%E5%88%97-%E7%AC%AC3%E7%AB%A0-%E8%BF%90%E8%A1%8C%E6%97%B6%E6%95%B0%E6%8D%AE%E5%8C%BA/" title="JVM系列-第3章-运行时数据区"><img src="https://gitee.com/kuikui1998/images_ben/raw/master/images/java/JVM/jvm.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="JVM系列-第3章-运行时数据区"/></a><div class="content"><a class="title" href="/2020/12/11/JVM%E7%B3%BB%E5%88%97-%E7%AC%AC3%E7%AB%A0-%E8%BF%90%E8%A1%8C%E6%97%B6%E6%95%B0%E6%8D%AE%E5%8C%BA/" title="JVM系列-第3章-运行时数据区">JVM系列-第3章-运行时数据区</a><time datetime="2020-12-11T07:31:58.000Z" title="发表于 2020-12-11 15:31:58">2020-12-11</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2020/12/11/JVM%E7%B3%BB%E5%88%97-%E7%AC%AC2%E7%AB%A0-%E7%B1%BB%E5%8A%A0%E8%BD%BD%E5%AD%90%E7%B3%BB%E7%BB%9F/" title="JVM系列-第2章-类加载子系统"><img src="https://gitee.com/kuikui1998/images_ben/raw/master/images/java/JVM/jvm.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="JVM系列-第2章-类加载子系统"/></a><div class="content"><a class="title" href="/2020/12/11/JVM%E7%B3%BB%E5%88%97-%E7%AC%AC2%E7%AB%A0-%E7%B1%BB%E5%8A%A0%E8%BD%BD%E5%AD%90%E7%B3%BB%E7%BB%9F/" title="JVM系列-第2章-类加载子系统">JVM系列-第2章-类加载子系统</a><time datetime="2020-12-11T06:31:58.000Z" title="发表于 2020-12-11 14:31:58">2020-12-11</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2020/12/11/JVM%E7%B3%BB%E5%88%97-%E7%AC%AC1%E7%AB%A0-JVM%E4%B8%8EJava%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/" title="JVM系列-第1章-JVM与Java体系结构"><img src="https://gitee.com/kuikui1998/images_ben/raw/master/images/java/JVM/jvm.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="JVM系列-第1章-JVM与Java体系结构"/></a><div class="content"><a class="title" href="/2020/12/11/JVM%E7%B3%BB%E5%88%97-%E7%AC%AC1%E7%AB%A0-JVM%E4%B8%8EJava%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/" title="JVM系列-第1章-JVM与Java体系结构">JVM系列-第1章-JVM与Java体系结构</a><time datetime="2020-12-11T00:51:56.000Z" title="发表于 2020-12-11 08:51:56">2020-12-11</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2020/12/09/docker%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/" title="docker常用命令"><img src="https://gitee.com/kuikui1998/images_ben/raw/master/images/tools/docker.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="docker常用命令"/></a><div class="content"><a class="title" href="/2020/12/09/docker%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/" title="docker常用命令">docker常用命令</a><time datetime="2020-12-09T09:25:56.000Z" title="发表于 2020-12-09 17:25:56">2020-12-09</time></div></div></div></div></div><div class="card-widget card-categories"><div class="card-content"><div class="item-headline"><i class="fas fa-folder-open"></i><span>分类</span></div><ul class="card-category-list" id="aside-cat-list">
            <li class="card-category-list-item "><a class="card-category-list-link" href="/categories/JVM/"><span class="card-category-list-name">JVM</span><span class="card-category-list-count">4</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/Java/"><span class="card-category-list-name">Java</span><span class="card-category-list-count">15</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E5%AE%9E%E7%94%A8%E5%B7%A5%E5%85%B7/"><span class="card-category-list-name">实用工具</span><span class="card-category-list-count">4</span></a></li>
            
            </ul></div></div><div class="card-widget card-tags"><div class="card-content"><div class="item-headline"><i class="fas fa-tags"></i><span>标签</span></div><div class="card-tag-cloud"><a href="/tags/JDBC/" style="font-size: 1.1em; color: #999">JDBC</a> <a href="/tags/JVM/" style="font-size: 1.2em; color: #999da3">JVM</a> <a href="/tags/Java/" style="font-size: 1.5em; color: #99a9bf">Java</a> <a href="/tags/Java%E5%9F%BA%E7%A1%80/" style="font-size: 1.3em; color: #99a1ac">Java基础</a> <a href="/tags/Java%E9%AB%98%E7%BA%A7/" style="font-size: 1.4em; color: #99a5b6">Java高级</a> <a href="/tags/docker/" style="font-size: 1.1em; color: #999">docker</a> <a href="/tags/git/" style="font-size: 1.1em; color: #999">git</a> <a href="/tags/hexo/" style="font-size: 1.1em; color: #999">hexo</a> <a href="/tags/javeweb/" style="font-size: 1.1em; color: #999">javeweb</a> <a href="/tags/linux/" style="font-size: 1.1em; color: #999">linux</a> <a href="/tags/%E8%99%9A%E6%8B%9F%E6%9C%BA/" style="font-size: 1.2em; color: #999da3">虚拟机</a></div></div></div><div class="card-widget card-archives"><div class="card-content"><div class="item-headline"><i class="fas fa-archive"></i><span>归档</span></div><ul class="card-archive-list"><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2021/01/"><span class="card-archive-list-date">一月 2021</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2020/12/"><span class="card-archive-list-date">十二月 2020</span><span class="card-archive-list-count">7</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2020/07/"><span class="card-archive-list-date">七月 2020</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2020/06/"><span class="card-archive-list-date">六月 2020</span><span class="card-archive-list-count">8</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2020/05/"><span class="card-archive-list-date">五月 2020</span><span class="card-archive-list-count">6</span></a></li></ul></div></div><div class="card-widget card-webinfo"><div class="card-content"><div class="item-headline"><i class="fas fa-chart-line"></i><span>网站资讯</span></div><div class="webinfo"><div class="webinfo-item"><div class="item-name">文章数目 :</div><div class="item-count">23</div></div><div class="webinfo-item"><div class="item-name">本站访客数 :</div><div class="item-count" id="busuanzi_value_site_uv"></div></div><div class="webinfo-item"><div class="item-name">本站总访问量 :</div><div class="item-count" id="busuanzi_value_site_pv"></div></div><div class="webinfo-item"><div class="item-name">最后更新时间 :</div><div class="item-count" id="last-push-date" data-lastPushDate="2021-01-05T09:40:19.483Z"></div></div></div></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div class="copyright">&copy;2020 - 2021 By Kuikui Hu</div><div class="framework-info"><span>框架 </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>主题 </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog"></i></button><button id="go-up" type="button" title="回到顶部"><i class="fas fa-arrow-up"></i></button></div></div><div><script src="https://cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js"></script><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.js"></script><script>var preloader = {
  endLoading: () => {
    document.body.style.overflow = 'auto';
    document.getElementById('loading-box').classList.add("loaded")
  },
  initLoading: () => {
    document.body.style.overflow = '';
    document.getElementById('loading-box').classList.remove("loaded")

  }
}
window.addEventListener('load',()=> {preloader.endLoading()})</script><div class="js-pjax"><script>function subtitleType () {
  $.getJSON('https://api.btstu.cn/yan/api.php?charset=utf-8&encode=json',function (data) {
    if (true) {
      var sub = "".length == 0 ? new Array() : "".split(',')
      var both = sub.unshift(data.text)
      typed = new Typed('#subtitle', {
        strings: sub,
        startDelay: 300,
        typeSpeed: 150,
        loop: true,
        backSpeed: 50,
      })
    } else {
      document.getElementById('subtitle').innerHTML = data.text
    }
  })
}

if (true) {
  if (typeof Typed === 'function') subtitleType()
  else $.getScript('https://cdn.jsdelivr.net/npm/typed.js/lib/typed.min.js', subtitleType)
} else {
  subtitleType()
}
</script><script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div><script id="click-heart" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/click-heart.min.js" async="async" mobile="true"></script></div></body></html>